package com.gjintel.business.proj.service;

import java.util.Date;
import java.util.List;

import com.gjintel.business.proj.model.BidderChange;
import com.gjintel.business.proj.model.DepositReturn;
import com.gjintel.business.proj.model.ProjectBidInfo;
import com.gjintel.business.proj.model.ProjectInfo;
import com.gjintel.framework.register.model.DepositCategory;
import com.gjintel.sdk.base.dao.Page;
import com.gjintel.sdk.base.service.IBaseService;

public interface IProjectBidService extends IBaseService {
	
	/**
	 * @description 获取中标信息
	 * @author shy
	 * @param projectId
	 * @param winningId
	 * @return
	 */
	public List<ProjectBidInfo> getProjectBid(String projectId, String winningId);
	
	/**
	 * @description 获取参与投标的人数
	 * @param projectId
	 * @author shy
	 * @return
	 */
	public List<ProjectBidInfo> getProjectBidCount(String projectId);
	
	/**
	 * @description 获取投标列表
	 * @param projectId
	 * @return
	 */
   public List<ProjectBidInfo> getProjectBid(String projectId);
   
   /**
    * @description 获取非中标信息列表
    * @author shy
    * @param projectId
    * @return
    */
//   public List<DepositReturn>getProjectBidList(String project,String projectName);
   
   /**
    * @description 更新保证资金状态
    * @author shy
    * @param projectId
    * @param ids
    * @return
    */
  // public void updateProjectBidInfo(String ids,Integer depositStatus);
   /**
    * @description 获取评标list
    * @author shy
    * @param projectId
    */
    public List<ProjectBidInfo> getProjectBidByProjectId(String projectId);
    
    /**
     * @description 退还中标保证金
     * @author shy
     * @param projectId
     */
  //  public String winningDeposit(String projectId,Integer depositStatus);
    
    /**
     * @description 查看中标保证金未退还的投标记录
     * @author shy
     * @param projectId
     */
    public List<ProjectBidInfo> getUnReturnList(String projectId,Integer depositStatus,String winningId);
    
    /**
     * @description 查询中标人是否交了该项目类型的协议保证金
     * @param winningId
     * @param category
     * @return
     */
    public List<DepositCategory> getDepositCategory(String winningId,String category);
    /**
     * @description 获取未中标，未退还保证金的投标信息
     * @param winningId
     * @param category
     * @return
     */
    public List<ProjectBidInfo> getUnWinAndUnReturnList(String projectId,Integer depositStatus);

    
    /**
     * @description查询投标信息 
     * @author wwang 
     * @date 2016年9月23日
     * @param projectId
     * @param evalutionResult  1.合格，2.不合格,0: 未评标
     * @return
     */
	public int getProjectBidCountByProjIdAndEvalutionResult(String projectId, int evalutionResult); 
	
	
	 /**
     * @description 根据projectId 查询DepositReturn list
     * @author shy
     * @date 2016年10月22日
     * @return
     */
	public List<DepositReturn> getDepositReturnList(String projectId);
   
	/**
	 * @description 获取非中标人的退还保证金列表
	 * @author shy
	 * @date 2016年10月22日
	 */
	
	public List<DepositReturn> getUnBidDepositReturn(String projectId,String loginName,Page page,Integer type);

	/**
	 * @description 获取非中标人的退还保证金列表(不评标)
	 * @author shy
	 * @date 2016年10月22日
	 */
	public List<DepositReturn> getDepositReturnNoEvaluation(String projectId,Integer type);




	/**
	 * @description 查询同一时间点开标的项目数量
	 * @author shy
	 * @date 2016年11月29日
	 * @return
	 */	
	public Integer getProjectCount(Date date);

	
	/**
	 * 原开标项目编号搜索自动完成
	 * @return
	 */
	public List<ProjectInfo> getProjectCodeCombo();

	/**
	 * 查询项目
	 * @param project 
	 * @param validTime
	 * @param nowTime
	 * @return
	 */
	public List<ProjectInfo> findListByWhere(ProjectInfo project, Date startTime, Date endTime);
	
	/**
	 * @description 获取有效投标时间
	 * @param projectInfo
	 * @return
	 */
	public List<ProjectBidInfo> findValidBidInfo(ProjectInfo projectInfo,Page page );
	
	/**
	 * @description 获取中标者中标信息
	 * @param projectId
	 * @param bidderId
	 * @return
	 */
	public ProjectBidInfo getBidderInfo(String projectId,String bidderId);


	public List<BidderChange> getBidChangList(Page page);
	
}
